home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / forth_83.zoo / tools.scr < prev    next >
Text File  |  1992-04-07  |  16KB  |  1 lines

  1. \\                       *** Tools ***                 25may86we                                                                In diesem File sind die wichtigsten Debugging-Tools enthalten.                                                                  Dazu gehören ein einfacher Decompiler, ein Speicherdump und     der Tracer (s. Kapitel im Handbuch)                             Vor allem der Tracer hat sich als sehr sinnvolles Werkzeug bei  der Fehlerbekämpfung entwickelt. Normalerweise sind Fehlerquel- len beim Tracen sofort auffindbar, manchmal allerdings auch     nicht ganz so schnell ...                                                                                                                                                                                                                                                                                                                                                                                                                                       \ Loadscreen for simple decompiler                     26oct86we                                                                Onlyforth    Vocabulary Tools  Tools also definitions                                                                           1 5 +thru                                                         6 +load     \ Tracer                                                                                                          Onlyforth                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \ Tools for decompiling                                26oct86we                                                                | : ?:     dup 4 u.r ." :" ;                                    | : @?     dup @ 6 u.r ;                                        | : c?     dup c@ 3 .r ;                                                                                                        : s   ( adr - adr+ )                                               ?: space  c? 3 spaces  dup 1+ over c@ type                      dup c@ + 1+ even ;                                                                                                           : n   ( adr - adr+2 )    ?: @? 2 spaces  dup @ >name .name 2+ ; : k   ( adr - adr+2 )    ?: 5 spaces @? 2+ ;                    : b   ( adr - adr+1)     ?: @? dup @ over + 5 u.r 2+ ;                                                                                                                                                                                                          \ Tools for decompiling                                26oct86we                                                                : d   ( adr n - adr+n)                                             2dup swap ?:  swap  0 DO c? 1+ LOOP  2 spaces  -rot type ;                                                                   : c   ( adr - adr+1)     1 d ;                                                                                                                                                                  \\                                                              : dump ( adr n -) bounds ?DO cr I 10 d drop stop? IF LEAVE      THEN 10 +LOOP ;                                                                                                                                                                                                                                                 \ dekompiliere  String Name Konstant Char Branch Dump           \               =      =    =        =    =      =              \ General Dump Utility - Output                        26oct86we                                                                | : .2      ( n -- )       0  <#   # #   #>   type  space ;     | : .6      ( d -- )       <#  # # # # # #  #>  type ;          | : d.2     ( addr len -- )      bounds ?DO  I c@  .2  LOOP ;   | : emit.   ( char -- )     $7F and                                      dup bl $7E uwithin not IF drop Ascii . THEN  emit ;                                                                    | : dln   ( addr --- )                                               cr  dup 6 u.r  2 spaces  8 2dup d.2  space                      over + 8 d.2  space   $10 bounds ?DO  I c@ EMIT.  LOOP  ;  | : ?.n    ( n1 n2 -- n1 )                                           2dup = IF  ." \/"  drop  ELSE  2 .r  THEN   space ;        | : ?.a    ( n1 n2 -- n1 )                                           2dup = IF  ." v"  drop   ELSE  1 .r  THEN ;                                                                                \ Longdump  basics                                     24aug86we                                                                | : ld.2   ( hiaddr loaddr len -- hiaddr )                           bounds ?DO  I over lc@ .2  LOOP  ;                                                                                         | : ldln   ( hiaddr loaddr  -- )                                     cr  dup >r  over   .6  2 spaces                                 r@ 8 ld.2 space   r@ 8 + 8 ld.2 space                           r> $10 bounds ?DO  I over lc@ emit.  LOOP drop ;                                                                           | : .head   ( addr len -- addr' len' )                                swap  dup -$10 and  swap  $0F and  cr 8 spaces                  8 0 DO  I ?.n  LOOP  space  $10 8 DO  I ?.n  LOOP               space  $10 0 DO  I ?.a  LOOP  rot + ;                                                                                                                                                     \ Dump and Fill Memory Utility                         10sep86we                                                                Forth definitions                                                                                                               : ldump   ( laddr len -- )                                         base push hex   >r swap r>  .head                               bounds ?DO  dup I ldln  stop? IF  LEAVE  THEN                               I $FFF0 = IF  1+  THEN  $10 +LOOP drop ;                                                                         : dump   ( addr len -- )                                           base push  hex    .head                                         bounds ?DO  I dln  stop? IF  LEAVE  THEN  $10 +LOOP ;                                                                                                                                                                                                                                                                        \ Trace Loadscreen                                     26oct86we                                                                Onlyforth       \needs Tools    Vocabulary Tools                Tools also definitions                                                                                                          \needs cpush   1 +load                                          \needs >absaddr                 : >absaddr   0  forthstart d+ ;                                                                 2 8 +thru                                                                                                                       Onlyforth